[アップデート]T2インスタンスのCPUクレジットがより使いやすくなりました
ご機嫌いかがでしょうか、豊崎です。
T2ファミリーのCPUクレジットについて嬉しいアップデートがありましたのでご紹介したいと思います。
New CPU Credit allocation policy for T2 instances
https://forums.aws.amazon.com/ann.jspa?annID=5196
前提知識
T2インスタンスの特徴としてCPUクレジットという考え方があります。
インスタンスサイズに応じて初期CPUクレジットを持っており、アイドル状態のときにCPUクレジットを貯めて、定められたベースラインを超えてのCPU性能を発揮させたい時はCPUクレジットを消費するという仕組みです。
詳細については以下を確認してください。
CPU クレジット 1 CPU クレジットは、1 CPU コア全体の 1 分間のパフォーマンスを表します。従来の Amazon EC2 インスタンスタイプはパフォーマンスが一定ですが、T2 インスタンスはベースラインレベルの CPU パフォーマンスを提供しながら、そのベースラインレベルを超えてバーストする機能を備えています。ベースラインパフォーマンスとバースト機能は、CPU クレジットにより管理されます。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html#t2-instances-cpu-credits
アップデート前
今までのCPUクレジットには24時間の有効期限がありました。 また、CPUクレジットバランスが最大値まで貯まらないケースがありました。
例:t2.mediumの場合
インスタンスタイプ | t2.medium |
---|---|
最大CPUクレジットバランス | 576 |
1時間あたりの蓄積クレジット | 24 |
※CPUクレジットが576貯まっているものとする
上記のインスタンスが一時的にバーストし20クレジット(2台のvCPUを100%の負荷で10分間実行)消費し、その後はCPU使用率が0%が保たれたとすると、 使用した20CPUクレジット部分が直近の24時間から外れるまで、最大CPUクレジットバランスは「556」に固定されていました。
イメージとしては以下です。
アップデート後
24時間での失効はなくなりました。CPUクレジットはEC2のTerminate、Stopが行われるまで有効期限切れにはなりません。
CPUクレジットバランスはCPU使用率がインスタンスごとに定められたベースラインを下回ると増加します。
CloudWatchのメトリクスとしては5分ごとに以下の計算式で取得されます。
CPUクレジットバランス = それまでのCPUクレジットバランス + (時間あたりの蓄積クレジット * (5/60) – CPUクレジット使用)
例:t2.mediumの場合
インスタンスタイプ | t2.medium |
最大CPUクレジットバランス | 576 |
1時間あたりの蓄積クレジット | 24 |
※CPUクレジットが576貯まっているものとする
上記のインスタンスが一時的にバーストし20クレジット(2台のvCPUを100%の負荷で10分間実行)消費し、その後はCPU使用率が0%が保たれた場合、
20クレジットを消費してCPUクレジットが556になったあと、24時間を待たずに2クレジット/5分が貯蓄されます。
(24 * (5/60) – 0)=2クレジット
このアップデートにより、24時間待たなくてもよくなり、今までより早くCPUクレジットバランスに到達します。
イメージとしては以下です。
※CPUクレジットの有効期限である24時間を考える必要がなくなるため、横軸は時間から最大クレジットバランスに変えています。
さいごに
アップデート前は常時(24時間)、10クレジットづつ消費しているような環境だと最大CPUクレジットバランスが「336」などになったりするわけで十分にCPUクレジットを貯められませんでした。 そのようなユースケースの場合、今回のアップデートによりCPUクレジットをより有効に利用することができるようになりました。t2シリーズがまたひとつ使いやすくなったと思います。 誰かのお役に立てれば幸いです。